const express = require("express")
// const http = require("http")
const app = express(); // 创建一个express应用
const path = require("path")
// 引入静态资源
const staticRoot = path.resolve(__dirname, '../public')
// 当请求时，会根据请求路径(req.path)，从指定的目录中寻找是否存在该文件，若存在，直接响应文件内容，而不再移交给后续的中间件
// 默认情况下，如果映射的结果是目录，则自动使用index.html文件
// app.use('/static', express.static(staticRoot))
app.use(express.static(staticRoot))
// app.post("/api/student", (req,res)=>{
//     console.log(req.body)
// })
// 解析 application/x-www-form-urlencoded 格式的请求体
app.use(
    express.urlencoded({
        extended: true
    })
)
// app.use(require("./myUrlEncoded"))
// 解析 application/json 格式的请求体
app.use(express.json())
// 处理api请求
app.use("/api/student", require('./api/student'))


const port = 5008;
app.listen(port, () => {
    console.log(`server listening ${port}`)
})




// app.use('/static', (req, res) => {
//     console.log(req.baseUrl, req.path)
// })
// app.get('/css/index.js', (req, res)=>{
//     console.log("abc")
// })
// app.use(require("./staticMiddleware"))
// app 实际是一个用于处理请求的函数
// const server = http.createServer(app)
// 配置一个请求映射，如果请求方法和请求路径均满足匹配，交给处理函数进行处理
// app.请求方法（"请求路径"，处理函数）
// app.get("/abc/:c", (req,res)=>{
// // 获取请求信息
// res和req是被express封装过后的对象
// console.log(req.headers)  //获取请求头
// console.log(req.path)  //获取请求路径
// console.log(req.query)  //获取请求参数
// console.log(req.params)  //获取请求动态数据

// 响应
// res.send("<h1>响应导数据<h1>")
// res.send({
//     id: 111,
//     name: 222,
//     age: 333
// })
// 设置响应头
// res.setHeader("a", "123")
// res.send([2,3,4])
// 设置响应码 响应头
// res.status(302).header("location", "https://www.baidu.com").end();
// res.status(302).location("https://www.baidu.com").end();
// res.redirect(302, "https://www.baidu.com")
// })
// app.get('/news',
//     (req, res, next) => {
//         console.log("handler1")
//         // res.status(200)
//         // res.send(`<h1>handler1</h1>`)
//         // res.end()
//         next(new Error("abc"))
//     },
//     // 引用响应错误的中间件 errorMiddleware.js
//     // require('./errorMiddleware')
//     // // err 响应处理错误的中间件
//     // (err, req, res, next) => {
//     //     console.log("handler2")
//     //     res.send(`<h1>服务器发生了错误</h1>`)
//     //     // res.send(`<h1>handler2</h1>`)
//     //     next()
//     // },
// )
// app.get('/news',
//     (req, res, next) => {
//         console.log("handler3")
//         next()
//         // res.send(`<h1>handler3</h1>`)

//     })
// // 引用响应错误的中间件 errorMiddleware.js
// app.use("/news", require("./errorMiddleware"))